#ifndef _FW_UPDATE_H_
#define _FW_UPDATE_H_

typedef	void *(*ThreadEntryPtrType)(void *);
typedef struct {
   ThreadEntryPtrType callback;
   void * arg;
   int arg_size;
} ThreadArgs;

typedef enum
{
	DEBUG_LEVEL = 0,
	INFO_LEVEL,
	WARN_LEVEL,
	ERR_LEVEL,
	MAX_LOG_LEVEL
};

typedef struct Tx_Task_Info_t_
{
	int soc_id:8; //bb soc id
	int slot_id:8; // slot idx
	int rsv1:16;
}Task_Info_t;

uint32_t u32_log_level_ctrl = INFO_LEVEL;

#define PRINT_DEBUG(fmt, args...)  \
		do{\
			if(u32_log_level_ctrl <=DEBUG_LEVEL){\
				printf("[APP DEBUG] [ %s, Line: %d ]  " fmt "\n", __FILE__, __LINE__,  ##args); \
			}\
		}while(0)

#define PRINT_INFO(fmt, args...)  \
		do{\
			if(u32_log_level_ctrl <=INFO_LEVEL){\
				printf("[APP INFO] [ %s, Line: %d ]  " fmt "\n", __FILE__, __LINE__,  ##args); \
			}\
		}while(0)

#define PRINT_WARN(fmt, args...)  \
		do{\
			if(u32_log_level_ctrl <=WARN_LEVEL){\
				printf("[APP WARN] [ %s, Line: %d ]  " fmt "\n", __FILE__, __LINE__,  ##args); \
			}\
		}while(0)

#define PRINT_ERR(fmt, args...)  \
		do{\
			if(u32_log_level_ctrl <=ERR_LEVEL){\
				printf("[APP ERR] [ %s, Line:%d ]  " fmt "\n", __FILE__, __LINE__,  ##args); \
			}\
		}while(0)

#define PRINT_TRACE(fmt, args...)  \
        do{\
            printf("[APP TRACE] [%s ,%s, Line:%d ]  " fmt "\n", __func__,__FILE__, __LINE__,	##args); \
        }while(0)

#endif